package com.ldl.distributelock.lock;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.UUID;

@SuppressWarnings("ALL")
@Component
//作为工厂类  通过方法提供不同的分布式锁
public class DistributedLockClient {
    @Autowired
    private StringRedisTemplate redisTemplate;

    //因为这个注入到Spring中默认就是单例的  因此通过这个服务单例的对象记住UUID
    //标识这个服务 然后通过线程号来判断是这个服务下的哪个线程的重入行为
    private String uuid = UUID.randomUUID().toString();

    public DistributedRedisLock getRedisLock(String lockName) {
        return new DistributedRedisLock(redisTemplate, lockName, uuid);
    }
}
